/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tk.eigh.ksvg.component.filter;

import ksvg.core.SVGFilter;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFComponent;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;

/**
 * <p>This filter primitive performs "fattening" or "thinning" of artwork. It is
 * particularly useful for fattening or thinning an alpha channel.</p> <p>The
 * dilation (or erosion) kernel is a rectangle with a width of
 * 2*<em>x-radius</em> and a height of 2*<em>y-radius</em>. In dilation, the
 * output pixel is the individual component-wise maximum of the corresponding
 * R,G,B,A values in the input image's kernel rectangle. In erosion, the output
 * pixel is the individual component-wise minimum of the corresponding R,G,B,A
 * values in the input image's kernel rectangle.</p> <p>Frequently this
 * operation will take place on alpha-only images, such as that produced by the
 * built-in input, <a href="filters.html#SourceAlpha"><span
 * class="attr-value">SourceAlpha</span></a>. In that case, the implementation
 * might want to optimize the single channel case.</p> <p>If the input has
 * infinite extent and is constant (e.g <span class="attr-value"><a
 * href="#FillPaint">FillPaint</a></span> where the fill is a solid color), this
 * operation has no effect. If the input has infinite extent and the filter
 * result is the input to an <a href="filters.html#feTileElement"><span
 * class="element-name">‘feTile’</span></a>, the filter is evaluated with
 * periodic boundary conditions. </p> <p>Because <a
 * href="filters.html#feMorphologyElement"><span
 * class="element-name">‘feMorphology’</span></a> operates on premultipied color
 * values, it will always result in color values less than or equal to the alpha
 * channel.</p>
 */
@JSFComponent(name = "svg:Morphology",
type = "tk.eigh.svg.Morphology",
family = "filter.Morphology",
clazz = "ksvg.filter.Morphology",
tagClass = "ksvg.tags.filter.MorphologyTag",
defaultRendererType = "filter.SVGMorphologyRenderer")
public abstract class AbstractMorphology extends SVGFilter {

    /**
     * operator = "<em>erode | dilate</em>"<br/>A keyword indicating whether to
     * erode (i.e., thin) or dilate (fatten) the source graphic. If attribute <a
     * href="http://www.w3.org/TR/SVG/filters.html#feMorphologyOperatorAttribute">
     * ‘operator’</a> is not specified, then the effect is as if a value of
     * erode were specified. <br/> <a
     * href="http://www.w3.org/TR/SVG/animate.html#Animatable">Animatable</a>:
     * yes.
     */
    @JSFProperty
    public abstract String getOperator();

    /**
     * radius = "<em><a
     * href="http://www.w3.org/TR/SVG/types.html#DataTypeNumberOptionalNumber">&lt;number-optional-number&gt;</a></em>"The
     * radius (or radii) for the operation. If two <a
     * href="http://www.w3.org/TR/SVG/types.html#DataTypeNumber">&lt;number&gt;</a>s
     * are provided, the first number represents a x-radius and the second value
     * represents a y-radius. If one number is provided, then that value is used
     * for both X and Y. The values are in the coordinate system established by
     * attribute <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementPrimitiveUnitsAttribute">
     * ‘primitiveUnits’</a> on the <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElement"> ‘filter’</a>
     * element.<br/> A negative value is an error (see <a
     * href="http://www.w3.org/TR/SVG/implnote.html#ErrorProcessing">Error
     * processing</a>). A value of zero disables the effect of the given filter
     * primitive (i.e., the result is a transparent black image).<br/> If the
     * attribute is not specified, then the effect is as if a value of 0 were
     * specified.<br/> <a
     * href="http://www.w3.org/TR/SVG/animate.html#Animatable">Animatable</a>:
     * yes.
     */
    @JSFProperty
    public abstract String getRadius();
}